package ar.fiuba.tp7552.buildadmin.webactions.expensas;

import java.util.Date;

import ar.fiuba.tp7552.buildadmin.model.BusinessException;
import ar.fiuba.tp7552.buildadmin.model.builds.Propiedad;
import ar.fiuba.tp7552.buildadmin.model.expensas.TipoExpensa;
import ar.fiuba.tp7552.buildadmin.service.ExpensaService;
import ar.fiuba.tp7552.buildadmin.service.PropiedadService;
import ar.fiuba.tp7552.buildadmin.webactions.BaseAction;

import com.opensymphony.xwork2.Preparable;

public class ReliquidarAction extends BaseAction implements Preparable {

	
	private ExpensaService expensaService;
	private PropiedadService propService;
	private Propiedad propiedad;
	private TipoExpensa tipoExpensa;
	private Date fechaCobro;
	private DetalleCobro detalle;
	private String comprobante;
	// ~~ Constructor ====================================================
	
	public ReliquidarAction(PropiedadService propService, ExpensaService expensaService) {
		super();
		this.expensaService = expensaService;
		this.propService = propService;
	}
	
	@Override
	public void prepare() throws Exception {
		if (propiedad != null && propiedad.getId() != null) {
			propiedad = propService.get(propiedad.getId());
		}
	}
	
	public String load() {
		return BaseAction.SUCCESS;
	}
	
	public String reliquidar() {
		try {
			detalle = expensaService.reliquidar(propiedad, tipoExpensa, fechaCobro);
			return BaseAction.SUCCESS;
		} catch (BusinessException e) {
			this.addActionError(e.getMessage());
			return BaseAction.INPUT;
		}
	}
	
	public String registrar() {
		expensaService.registrar(propiedad, tipoExpensa, fechaCobro, comprobante);
		return BaseAction.SUCCESS;
	}
	
	// ~~ getters y setters ========================================================
	public Propiedad getPropiedad() {
		return propiedad;
	}
	public void setPropiedad(Propiedad propiedad) {
		this.propiedad = propiedad;
	}
	public TipoExpensa getTipoExpensa() {
		return tipoExpensa;
	}
	public void setTipoExpensa(TipoExpensa tipoExpensa) {
		this.tipoExpensa = tipoExpensa;
	}
	public Date getFechaCobro() {
		return fechaCobro;
	}
	public void setFechaCobro(Date fechaCobro) {
		this.fechaCobro = fechaCobro;
	}
	public DetalleCobro getDetalle() {
		return detalle;
	}
	public void setDetalle(DetalleCobro detalle) {
		this.detalle = detalle;
	}
	public String getComprobante() {
		return comprobante;
	}
	public void setComprobante(String comprobante) {
		this.comprobante = comprobante;
	}
}
